05 Memory

(1) Describe physical memory, virtual memory, and shared memory, respectively

Physical memory는  RAM으로, 실질적으로 값이 할당되는 한정된 자원이자, 커널이 직접 관리하는 물리적 공간이다.

Virtual memory는 운영체제가 제공하는 논리적 공간으로, 유저 어플리케이션이 접근할 수 있는 고유하고 독립된 메모리이다. 실존하지는 않지만, 커널이 논리적 공간과 물리적 공간을 매핑함으로써 프로세스가 실존하는 것처럼 느껴지게 만든다.
각 프로세스는 별도의 VM을 가지며, VM의 일부는 공통된 커널 공간으로 고정 할당된다.

Shared memory는 물리적 공간의 일부를 여러 프로세스의 논리적 공간과 one-to-many 매핑하여, 각 프로세스들이 동일한 데이터를 공유하고 접근할 수 있게 한다. 단, 동기화 문제를 해결하기 위한 적절한 메커니즘이 필요하다.

(2) Describe the need for virtual memory and shared memory, respectively

Virtual memory는 메모리 크기 제한을 극복하고, 각 프로세스에 독립적이고 안전한 메모리를 제공하기 위해 필요하다. 커널은 물리적 메모리 공간이 부족한 경우에도 가상의 논리적 공간을 할당하여 프로세스가 동작하기 위해 필요한 메모리를 제공할 수 있다. 또한 각 프로세스들이 실제 메모리 공간에 직접 접근하는 것을 허용하지 않음으로써 다른 프로세스의 메모리 값에 읽거나 변경하는 것을 막는다.

Shared memory는 프로세스간에 효율적인 데이터 공유와 통신을 위해 필요하다. 소켓이나 파이프와 같은 IPC에 비해 훨씬 빠르고, 공간이 매핑된 후에는 데이터 전송에 커널이 개입하지 않기 때문에 오버헤드가 적다.